package edu.nf.ch02.config;

import edu.nf.ch02.config.RootConfig;
import jakarta.servlet.MultipartConfigElement;
import jakarta.servlet.ServletRegistration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
 * @author wangl
 * @date 2025/5/14
 */
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    /**
     * 自定义servlet配置
     * 例如：启用DispatcherServlet上传功能
     * @param registration
     */
    @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        //创建上传配置对象
        // 参数一：上传的根目录
        // 参数二：限制单个文件上传的大小（单位：字节）
        // 参数三：限制本次请求中所有文件的总大小
        // 参数四：当达到指定大小时，将写入文件
        MultipartConfigElement configElement = new MultipartConfigElement("", 20971520, 2097152000, 2097152);
        //注册上传配置
        registration.setMultipartConfig(configElement);
        //让DispatcherServlet在启动web容器时就初始化
        registration.setLoadOnStartup(0);
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}